草庐IT

Java BufferedImage 内存消耗

全部标签

构造函数中的 Java 内存可见性

对于以下简化类:publicclassMutableInteger{privateintvalue;publicMutableInteger(intinitial){synchronized(this){//isthisnecessaryformemoryvisibility?this.value=initial;}}publicsynchronizedintget(){returnthis.value;}publicsynchronizedvoidincrement(){this.value++;}...}我想一般的问题是对于同步保护的可变变量,在构造函数中设置初始值时是否需要同步?

java - 将 spark 数据帧写入 Parquet 格式时出现内存不足错误

我正在尝试从数据库中查询数据,对其进行一些转换并将新数据以Parquet格式保存在hdfs上。由于数据库查询返回大量行,我正在分批获取数据并对每个传入批处理运行上述过程。更新2:批处理逻辑是:importscala.collection.JavaConverters._importorg.apache.spark.SparkContextimportorg.apache.spark.sql.SQLContextimportorg.apache.spark.sql.Rowimportorg.apache.spark.sql.types.{StructType,StructField,St

java - Java 可以写入/读取已释放的堆外内存吗?

这确实让我感到惊讶,我正在玩JavaUnsafe。基本上我正在测试的是Allocateunsafememory->freethememory->Writetothefreedmemory我期望在访问已释放的内存时看到某种段错误,但令人惊讶的是,没有引发任何错误/异常。我的代码是:protectedstaticfinalUnsafeUNSAFE;static{try{Fieldfield=Unsafe.class.getDeclaredField("theUnsafe");field.setAccessible(true);UNSAFE=(Unsafe)field.get(null);}

java - Hibernate:避免一次将所有记录读入内存

我在数据库中有大量行,我需要从中创建一个XML文档。我正在使用hibernate3。Criteria和Query接口(interface)中的基本list()方法看起来很危险:我怀疑它几乎必须将所有记录读入内存,即使我只迭代它们也是如此。还是有一些延迟加载魔术?如果没有,我似乎还有两个选择:使用Query中的scroll()或iterate()(滚动也存在于Criteria中)。如果我想要最少的SQL往返,iterate看起来也不是那么好:“第一个SQL查询仅返回标识符”。所以我是对的,我必须为此使用scroll()吗? 最佳答案

java - 可能的内存泄漏?

我有一个正在运行的javawebapp,我正在使用visualVM进行监控。这是堆的图:使用两组请求进行了测试,一组在大约3:20,另一组在大约4:40(它们在图中表示为仅有的两个峰值)。我的问题是:这是否意味着我有内存泄漏?我担心中间部分,虽然GC运行,但堆一直保持在250MB。非常感谢您的见解。 最佳答案 在3:20的第一个请求导致一些内存被占用,但请注意,在第二个请求之后的GC回收了大部分内存。另外我认为majorGC是在4:40的第二次请求之后才执行的。看起来没有泄漏。我的理论是3:20的请求导致年轻代被填满,由此产生的次要

java - Hibernate:遍历数百万行并且不泄漏内存

下面的代码起作用了,但是Hibernate永远不会放弃它对任何对象的控制。调用session.clear()会导致有关获取连接类的异常,并且在检索下一个对象之前调用session.evict(currentObject)也无法释放内存。最终我耗尽了堆空间。检查我的堆转储,StatefulPersistenceContext是指向我的对象的所有引用的垃圾收集器的根。publicclassCriteriaReportSourceimplementsJRDataSource{privateScrollableResultssr;privateObjectcurrentObject;priva

java - 一个类什么时候从堆内存中卸载

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Unloadingclassesinjava?类什么时候从内存中卸载?为了加载一个类,我们可以调用Class.forName("NameOfClass");或者当我们创建一个类的对象时,然后将该类加载到内存中。

Java VisualVM 内存采样器 - 如何获取特定类的大小

我的应用程序使用的内存比我想象的要多得多,我试图了解哪个类正在使用大量内存并且可能没有释放它。我正在使用VisualVM,在内存采样器中,我可以看到大部分内存都花在了字符、字符串和字节上,我所有的类都使用了字符串,但正如您所知,VisualVM显示了系统中的所有字符和字符串(所有Chars都与Strings相同,这使得很难理解谁拥有它们),据我了解,保存这些字符串的其他类的大小是在没有字符串的情况下计算的。我如何在这个工具中看到谁是“真正的”最大的类——包含所有这些字符串的类?(最好是我可以从这些类获取它们的字符串,而不是相反)我尝试在heapDump中使用“roottothenear

java - JVM 内存问题

请帮我解决一个问题。我的CentOS有4GBRAM,Tomcat配置有大约1500MB内存。在某些时候,当我的机器达到配置的最大线程数(即200)时,它会挂起。我们必须重新启动应用程序服务器才能使其再次运行。参数是:JAVA_OPTS="-server-Xss128k-Xms2048m-Xmx2048m-XX:MaxPermSize=512m-XX:NewRatio=3-XX:SurvivorRatio=6-XX:+UseConcMarkSweepGC-XX:+CMSIncrementalMode-XX:CMSInitiatingOccupancyFraction=80-Dfile.e

JavaFX - 加载图像和内存问题

我在将图像加载到我的应用程序时遇到了问题。我正在尝试制作一个简单的图像浏览器。在左边我有一个文件夹列表。单击列表中的文件夹名称后,图像应出现在右侧(流程Pane)。每个图像都在一个带边框的HBox中。但是我很快就遇到这样的错误:java.lang.outofmemoryerrorjavaheapspace我查看了任务管理器-如果我只加载6张照片,应用程序会占用500MB的内存!还有一件事-如果我更改列表中的文件夹,内存仍然被占用。在选择另一个文件夹时,我正在创建新的flowPaneflowPane=newFlowPane();所以旧的包含所有ImageView的应该被垃圾收集器删除,对